package com.foreknow.demo3;

import java.util.Scanner;

/**
 * 编写一个 Java 程序，根据用户输入的日子（1-31）、月份（1-12）和年份，判断并输出该日期是一个有效的日期并属于哪个季节。根据月份输出不同的季节名称（春、夏、秋、冬）。
 *
 * **要求：**
 * 1. 使用嵌套的 `if` 语句检查输入的日期是否有效（根据不同月份判断日期范围，并考虑闰年）。
 * 2. 使用 `switch` 语句根据月份确定季节。
 * 3. 输出判断结果，包括日期是否有效和所属季节。
 */
public class Ex2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入年份：");
        int year = scanner.nextInt();
        System.out.print("请输入月份（1-12）：");
        int month = scanner.nextInt();
        System.out.print("请输入日期（1-31）：");
        int day = scanner.nextInt();

        boolean isValidDate = false;
        String season = "";
        // 嵌套if语句检查日期是否有效
        if (year > 0) {
            if (month >= 1 && month <= 12) {
                // 判断每个月的天数
                switch (month) {
                    case 4: case 6: case 9: case 11:
                        if (day >= 1 && day <= 30) {
                            isValidDate = true;
                        }
                        break;
                    case 2:
                        // 判断是否是闰年
                        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                            if (day >= 1 && day <= 29) {
                                isValidDate = true;
                            }
                        } else {
                            if (day >= 1 && day <= 28) {
                                isValidDate = true;
                            }
                        }
                        break;
                    default:
                        if (day >= 1 && day <= 31) {
                            isValidDate = true;
                        }
                        break;
                }

                // 使用switch语句确定季节
                switch (month) {
                    case 3: case 4: case 5:
                        season = "春季";
                        break;
                    case 6: case 7: case 8:
                        season = "夏季";
                        break;
                    case 9: case 10: case 11:
                        season = "秋季";
                        break;
                    case 12: case 1: case 2:
                        season = "冬季";
                        break;
                }
            }
        }

        // 输出结果
        if (isValidDate) {
            System.out.println("输入的日期是有效的：" + year + "年" + month + "月" + day + "日，属于" + season + "。");
        } else {
            System.out.println("输入的日期无效，请检查输入的年、月、日是否正确。");
        }
    }
}
